using System;
using System.ComponentModel;
using System.Data;
using System.Web.Services;
using System.Xml;
using FormsGenerator.DataAccess;

namespace FormsGenerator.Xml
{
	/// <summary>
	/// Summary description for XmlService.
	/// </summary>
	public class XmlService : System.Web.Services.WebService
	{
		public XmlService()
		{
			//CODEGEN: This call is required by the ASP.NET Web Services Designer
			InitializeComponent();
		}

		#region Component Designer generated code

		//Required by the Web Services Designer 
		private IContainer components = null;

		/// <summary>
		/// Required method for Designer support - do not modify
		/// the contents of this method with the code editor.
		/// </summary>
		private void InitializeComponent()
		{
		}

		/// <summary>
		/// Clean up any resources being used.
		/// </summary>
		protected override void Dispose(bool disposing)
		{
			if (disposing && components != null)
			{
				components.Dispose();
			}
			base.Dispose(disposing);
		}

		#endregion

		// WEB SERVICE EXAMPLE
		// The HelloWorld() example service returns the string Hello World
		// To build, uncomment the following lines then save and build the project
		// To test this web service, press F5

		[WebMethod]
		public string HelloWorld()
		{
			return "Hello World from FormsGenerator";
		}

		[WebMethod]
		public string GetForm(string guid)
		{
			try
			{
				XmlDocument formDoc = XmlHandler.GetForm(guid);
				return formDoc.InnerXml;
			}
			catch (Exception ex)
			{
				throw ex;
			}
		}

		[WebMethod]
		public XmlDocument GetForms(string userId)
		{
			try
			{
				XmlDocument xmlResult = new XmlDocument();
				DataSet dsForms = new DataSet("Forms");
				DataTable dtForms = DBFactory.Instance.DBHandlerInstance().GetForms(userId);
				dsForms.Tables.Add(dtForms);
				xmlResult.LoadXml(dsForms.GetXml());
				return xmlResult;
			}
			catch (Exception ex)
			{
				throw ex;
			}
		}

		[WebMethod]
		public void LockForm(string guid, string userId)
		{
			try
			{
				DBFactory.Instance.DBHandlerInstance().LockForm(guid, userId);
			}
			catch (Exception ex)
			{
				throw ex;
			}
		}

		[WebMethod]
		public void UnLockForm(string guid, string userId)
		{
			try
			{
				DBFactory.Instance.DBHandlerInstance().UnLockForm(guid, userId);
			}
			catch (Exception ex)
			{
				throw ex;
			}
		}

		[WebMethod]
		public void DeleteForm(string guid, string userId)
		{
			try
			{
				DBFactory.Instance.DBHandlerInstance().DeleteForm(guid, userId);
			}
			catch (Exception ex)
			{
				throw ex;
			}
		}
	}
}